Software that allows you to write instructions to define a task, which are then translated to a form understood by the PC. High-level languages such as Basic and Pascal are easy to understand and use, but slow, since each instruction is made up of a number of machine code instructions. Low-level languages, such as Assembler, are more complex to read and program in, but faster.